
// export const BASE_URL = 'http://192.168.80.67:8090/sshb'; //线上
export const BASE_URL = 'http://172.23.1.31:8090/sshb'; //打包线上

// export const BASE_URL = 'http://192.168.80.30:8090/sshb';//本地
export const CLIENT_ID = 'e5cd7e4891bf95d1d19206ce24a7b32e'; // 只用于访客保安大屏端



/**
 * 获取存储的token
 * @returns {string} token值或空字符串
 */
export const getToken = () => {
	try {
		return uni.getStorageSync('token') || '';
	} catch (error) {
		console.error('获取token失败:', error);
		return '';
	}
};

/**
 * 生成统一的请求头
 * @param {string} contentType - 请求内容类型，默认application/json
 * @returns {object} 配置好的请求头
 */
export const getHeaders = (contentType = 'application/json') => {
	const token = getToken();
	return {
		'content-type': contentType,
		...(token ? {
			authorization: 'Bearer ' + token
		} : {}),
		clientId: CLIENT_ID
	};
};

/**
 * 封装 uni.request
 * @param {string} url 接口路径
 * @param {object} data 请求参数
 * @param {string} method 请求方法 GET/POST/PUT
 * @param {boolean} isShowLoading 是否显示 loading，默认 true
 * @returns {Promise}
 */
function request(url, data = {}, method = 'GET', isShowLoading = true) {
	// 使用封装的配置和方法
	const header = getHeaders();

	if (isShowLoading) {
		uni.showLoading({
			title: '加载中...',
			mask: true,
		});
	}

	return new Promise((resolve, reject) => {
		uni.request({
			url: BASE_URL + url, // 使用封装的BASE_URL
			data,
			method,
			header,
			success(res) {
				if (res.statusCode >= 200 && res.statusCode < 300) {
					if (res.data.code == 200 || res.data.code == 500) {
						resolve(res.data);
					} else if (res.data.code == 401) {
						uni.removeStorageSync('token');
						window.location.reload();
						uni.showToast({
							icon: 'error',
							title: "登录信息失效，请重新登录"
						})
					}
				} else {
					uni.showToast({
						title: '稍后再试~',
						icon: 'none'
					});
					reject(res.errMsg || '稍后再试~');
				}
			},
			fail(err) {
				uni.showToast({
					title: '网络异常',
					icon: 'none'
				});
				reject(err);
			},
			complete() {
				if (isShowLoading) {
					uni.hideLoading();
				}
			},
		});
	});
}

// GET 请求封装
export function $get(url, data = {}, isShowLoading = true) {
	return request(url, data, 'GET', isShowLoading);
}

// POST 请求封装
export function $post(url, data = {}, isShowLoading = true) {
	return request(url, data, 'POST', isShowLoading);
}

// PUT 请求封装
export function $put(url, data = {}, isShowLoading = true) {
	return request(url, data, 'PUT', isShowLoading);
}